#ifndef TRANSACTION_HH
#define TRANSACTION_HH

#include <string>
#include <ctime>
#include <iomanip>
#include <iostream>

class Transaction {
private:
    static int nextTransactionID;
    int transactionID;
    double amount;
    std::string type;
    std::string note;
    time_t timestamp;

public:
    Transaction();
    Transaction(double amount, const std::string& type, const std::string& note = "");
    ~Transaction();
    Transaction(const Transaction& other) ;
    Transaction& operator=(const Transaction& other) ;

    int getTransactionID() const;
    double getAmount() const;
    const std::string& getType() const;
    const std::string& getNote() const;
    time_t getTimestamp() const;

    static void resetNextTransactionID();
    void print() const;
};

#endif // TRANSACTION_HH